package llc.ufwa.unlimitedlist;

import java.util.Collection;
import java.util.List;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Executor;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;

import llc.ufwa.concurrency.LimitingExecutorService;

public class UnlimitedListLimitingExecutorService extends LimitingExecutorService {

    public UnlimitedListLimitingExecutorService(
        final ExecutorService executors,
        final Executor callbackThreads, 
        final int limit
    ) {
        super(executors, callbackThreads, limit);
    }

    @Override
    public <T> List<Future<T>> invokeAll(
        final Collection<Callable<T>> arg0
    ) throws InterruptedException {
        throw new RuntimeException("Not supported");
    }

    @Override
    public <T> List<Future<T>> invokeAll(
        final Collection<Callable<T>> arg0, 
        final long arg1,
        final TimeUnit arg2
    ) throws InterruptedException { 
        throw new RuntimeException("Not supported");
    }

    @Override
    public <T> T invokeAny(
        final Collection<Callable<T>> arg0
    ) throws InterruptedException, ExecutionException {
        throw new RuntimeException("Not supported");
    }

    @Override
    public <T> T invokeAny(
        final Collection<Callable<T>> arg0,
        final long arg1, 
        final TimeUnit arg2
    ) throws InterruptedException, ExecutionException, TimeoutException {
        throw new RuntimeException("Not supported");
    }
}
